{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np \n",
    "import pandas as pd \n",
    "from sklearn.cluster import KMeans\n",
    "from transformers import AutoModel, AutoTokenizer\n",
    "import torch\n",
    "from sklearn.decomposition import PCA\n",
    "import matplotlib.pyplot as plt "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f6ce4f8741504476a1eec6c3f9d8bbbc",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "tokenizer_config.json:   0%|          | 0.00/48.0 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "aa911c3f18f4453f855690bb9dcafa7a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "config.json:   0%|          | 0.00/570 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "d6b64a834655449ba850c09b09853620",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "vocab.txt:   0%|          | 0.00/232k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8263d9c1f8974b34a6eadb65cb4ea846",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "tokenizer.json:   0%|          | 0.00/466k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/root/miniconda3/envs/py311/lib/python3.11/site-packages/transformers/tokenization_utils_base.py:1601: FutureWarning: `clean_up_tokenization_spaces` was not set. It will be set to `True` by default. This behavior will be depracted in transformers v4.45, and will be then set to `False` by default. For more details check this issue: https://github.com/huggingface/transformers/issues/31884\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b93a06392b2946ab82c7adab7d5cf4f1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "model.safetensors:   0%|          | 0.00/440M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `beta` will be renamed internally to `bias`. Please use a different name to suppress this warning.\n",
      "A parameter name that contains `gamma` will be renamed internally to `weight`. Please use a different name to suppress this warning.\n"
     ]
    }
   ],
   "source": [
    "# 加载预训练的Bert模型和分词器\n",
    "tokenizr = AutoTokenizer.from_pretrained(\"bert-base-uncased\")\n",
    "model = AutoModel.from_pretrained(\"bert-base-uncased\")\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据准备：实例文档\n",
    "documents =  [\n",
    "    \"Machine learning is fascinating.\",\n",
    "    \"Artificial intelligence is the future.\",\n",
    "    \"The weather today is sunny.\",\n",
    "    \"I love to go hiking on weekends.\",\n",
    "    \"Deep learning models require a lot of data.\",\n",
    "    \"Natural language processing is a key AI technology.\"\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 文本向量化\n",
    "def embed_text(text):\n",
    "    inputs = tokenizr(text, return_tensors=\"pt\", padding=True, truncation=True, max_length=128)\n",
    "    with torch.no_grad():\n",
    "        outputs = model(**inputs)\n",
    "    # 使用CLS token的输出作为句子的向量表示\n",
    "    return outputs.last_hidden_state[:, 0, :].numpy()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.08360313,  0.0931255 , -0.24523808, ..., -0.37428018,\n",
       "         0.05018429,  0.560633  ],\n",
       "       [-0.19975667,  0.0432984 , -0.10323723, ..., -0.6491133 ,\n",
       "         0.32493833,  0.6607552 ],\n",
       "       [ 0.04023371, -0.2145964 , -0.07430582, ..., -0.46895513,\n",
       "         0.69369507,  0.40624648],\n",
       "       [ 0.18798392,  0.04919811, -0.25159338, ..., -0.3225931 ,\n",
       "         0.51055205,  0.17032152],\n",
       "       [-0.04555125, -0.15671413, -0.38199496, ..., -0.41349906,\n",
       "         0.06375275,  0.50797164],\n",
       "       [-0.45067114, -0.24359252, -0.38506645, ..., -0.56109536,\n",
       "        -0.29829144,  0.3940828 ]], dtype=float32)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将所有文档向量化\n",
    "document_embeddings = np.vstack([embed_text(doc) for doc in documents])\n",
    "document_embeddings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用K-means聚类\n",
    "num_clusters = 2 \n",
    "kmeans = KMeans(n_clusters=num_clusters, random_state=0).fit(document_embeddings)\n",
    "labels = kmeans.labels_\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Document: Machine learning is fascinating. \n",
      " Assigned to cluster: 1\n",
      "\n",
      "Document: Artificial intelligence is the future. \n",
      " Assigned to cluster: 1\n",
      "\n",
      "Document: The weather today is sunny. \n",
      " Assigned to cluster: 0\n",
      "\n",
      "Document: I love to go hiking on weekends. \n",
      " Assigned to cluster: 0\n",
      "\n",
      "Document: Deep learning models require a lot of data. \n",
      " Assigned to cluster: 1\n",
      "\n",
      "Document: Natural language processing is a key AI technology. \n",
      " Assigned to cluster: 1\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# 展示结果\n",
    "for i, doc in enumerate(documents):\n",
    "    print(f\"Document: {doc} \\n Assigned to cluster: {labels[i]}\\n\")\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERPTJ8PDwwPDhw0s6DADAlClTULNmzZIO44MKCAiAj4+PyuUjIiIgk8nw7NmzYoupuHxqsctkMmzfvr1E2o6MjISLiwu0tLSKdP3t7e2xYMGCYouLiP4bJnJERF+IgIAAyGQyyGQyaGlpoWzZsmjZsiVWrVoFuVxe0uF9ckaPHo1Dhw6VdBj0nho2bIiUlBSYmJiUdCjvpahJd2FGjhyJmjVrIikpCaGhoR+kTmVCQ0NhampabPUTkSImckREX5BWrVohJSUFycnJ2Lt3L5o1a4Zhw4ahTZs2yMnJKenwPoqsrCyVyhkaGsLc3LyYo/myqHruPwRtbW1YWVlBJpMp3Z6bm/vF/AEjMTERzZs3R4UKFZhoEX1GijWRO3bsGNq2bYty5cqV6JACIiJ6TUdHB1ZWVihfvjzc3Nzwv//9Dzt27MDevXsV/lL/7Nkz9OnTBxYWFjA2Nkbz5s0RExOjUNeOHTvg5uYGXV1dODg4ICgoSCEZlMlkWLJkCb799lvo6enBwcEBmzdvLlK8mZmZGD16NMqXLw8DAwPUr18fERER0vbHjx+ja9euKF++PPT19eHi4oL169cr1OHh4YHBgwdj+PDhKFOmDLy8vKRhd4cOHUKdOnWgr6+Phg0bIj4+Xtrv7aGVeT0kc+bMgbW1NczNzTFo0CBkZ2dLZVJSUtC6dWvo6emhYsWKWLdu3TuHp+XVO2PGDJQtWxampqaYOnUqcnJyMGbMGJiZmaFChQoICQlR2O/SpUto3rw59PT0YG5ujn79+iE9PV3anpubi5EjR8LU1BTm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BNSoUQNNmzaFpqYmNmzYoPL+qtwPRkZG+OWXX1CnTh3UrVsXycnJ2LNnj/Sezy1btqBu3bro2rUrqlatirFjx753b5kq8ZQqVQqLFi3CsmXLUK5cOXh7e79XW5qamti+fTvS09NRt25d9OnTR5q18s1rkJiYiEePHr1XG0RE9GWTCSEK+xN8iUpLS4OJiQlSU1PfezgUEalG/nwB8GIpFJ+Pe5MmoN0QGmZ/fMSo6EPq27cvrl69iuPHj5d0KF+kyMhING7cGAkJCahUqVJJh1Os+P1NRFT8+IwcEQEAZPq+EC+W4/XwSmV/38mFzMD/I0dF/8WcOXPQsmVLGBgYYO/evQgLC8Pvv/9e0mF9MbZt2wZDQ0N89dVXSEhIwLBhw9CoUaPPPokjIqKPg4kcEQEAZJrWgOlciGcj8HrUdd7wNc3X/20wCDKdpiUXIBXZmTNn8Msvv+D58+dwcHDAokWL0KdPn5IO64vx/PlzjBs3Drdu3UKZMmXQokULzJ07t6TDIiKizwSHVhKRApEdD5GxGsg8AohcQLsWZPo9INNpVNKhEZGa4Pc3EVHxY48cESmQaTlBZvJzSYdBRERERIXgrJVERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqhokcERERERGRmmEiR0REREREpGaYyBEREREREakZJnJERERERERqptgSuZ9//hkNGzaEvr4+TE1Ni6sZIiIiIiKiL06xJXJZWVno1KkTBg4cWFxNEBERERERfZFKFVfFQUFBAIDQ0NDiaoKIiIiIiOiLVGyJ3PvIzMxEZmamtJyWllaC0RAREREREX2aPqnJToKDg2FiYiJ9bGxsSjokIiIiIiKiT06RErnx48dDJpMV+rl69ep7BzNhwgSkpqZKn9u3b793XURERERERJ+rIg2tHDVqFAICAgot4+Dg8N7B6OjoQEdH5733JyIiIiIi+hIUKZGzsLCAhYVFccVCREREREREKii2yU5u3bqFJ0+e4NatW8jNzUV0dDQAoHLlyjA0NCyuZomIiIiIiD57xZbITZ48GWFhYdJyrVq1AABHjhyBh4dHcTVLRERERET02ZMJIURJB1GQtLQ0mJiYIDU1FcbGxiUdDhEREamA399ERMXvk3r9ABEREREREb0bEzkiIiIiIiI1w0SOiIiIiIhIzTCRIyIiIiIiUjNM5IiIiIiIiNQMEzkiIiIiIiI1w0SOiIiIiIhIzTCRIyIiIiIiUjNM5IiIiIiIiNQMEzkiIiIiIiI1w0SOiIiIiIhIzTCRIyIiIiIiUjNM5IiIiIiIiNQMEzkiIiIiIiI1w0SOiIiIiIhIzTCRIyIiIiIiUjNM5IiIiIiIiNQMEzkiIiIiIiI1w0SOiIiIiIhIzTCRIyIiIiIiUjNM5IiIiIiIiNQMEzkiIiIiIiI1w0SOiIiIiIhIzTCRIyIiIiIiUjNM5IiIiIiIiNQMEzkiIiIiIiI1w0SOiIiIiIhIzTCRIyIiIiIiUjNM5IiIiIiIiNQMEzkiIiIiIiI1w0SOiIiIiIhIzTCRIyIiIiIiUjNM5IiIiIiIiNQMEzkiIiIiIiI1w0SOiIiIiIhIzRRbIpecnIzevXujYsWK0NPTQ6VKlRAYGIisrKziapKIiIiIiOiLUKq4Kr569SrkcjmWLVuGypUr4/Lly+jbty9evHiBOXPmFFezREREREREnz2ZEEJ8rMZmz56NJUuW4MaNGyqVT0tLg4mJCVJTU2FsbFzM0REREdGHwO9vIqLiV2w9csqkpqbCzMyswO2ZmZnIzMyUltPS0j5GWERERERERGrlo012kpCQgMWLF6N///4FlgkODoaJiYn0sbGx+VjhERERERERqY0iJ3Ljx4+HTCYr9HP16lWFfe7evYtWrVqhU6dO6Nu3b4F1T5gwAampqdLn9u3bRT8iIiIiIiKiz1yRn5F7+PAhHj9+XGgZBwcHaGtrAwDu3bsHDw8PfP311wgNDYWGhuq5I8fYExERqR9+fxMRFb8iPyNnYWEBCwsLlcrevXsXzZo1Q+3atRESElKkJI6IiIiIiIiUK7bJTu7evQsPDw/Y2dlhzpw5ePjwobTNysqquJolIiIiIiL67BVbInfgwAEkJCQgISEBFSpUUNj2Ed94QERERERE9NkptrGOAQEBEEIo/RAREREREdH740NrREREREREaoaJHBERERERkZphIkdERERERKRmmMgRERERERGpGSZyREREREREaoaJHBERERERkZphIkdERERERKRmmMgRERERERGpGSZyREREREREaoaJHBERERERkZphIkdERERERKRmmMgRERERERGpGSZyREREREREaoaJHBERERERkZphIkdERERERKRmmMgRERERERGpGSZyREREREREaoaJHBERERERkZphIkdERERERKRmmMgRERERERGpGSZyREREREREaoaJHBERERERkZphIkdERERERKRmmMgRERERERGpGSZyREREREREaoaJHBERERERkZphIkdERERERKRmmMgRERERERGpGSZyREREREREaoaJHBERERERkZphIkdERERERKRmmMgRERERERGpGSZyREREREREaoaJHBERERERkZphIkdERERERKRmijWR+/7772FrawtdXV1YW1ujR48euHfvXnE2SURERERE9Nkr1kSuWbNm+OuvvxAfH48tW7YgMTERHTt2LM4miYiIiIiIPnsyIYT4WI3t3LkTPj4+yMzMhJaW1jvLp6WlwcTEBKmpqTA2Nv4IERIREdF/xe9vIqLiV+pjNfTkyROsXbsWDRs2LDCJy8zMRGZmprSclpb2scIjIiIiIiJSG8U+2cm4ceNgYGAAc3Nz3Lp1Czt27CiwbHBwMExMTKSPjY1NcYdHRERERESkdoqcyI0fPx4ymazQz9WrV6XyY8aMwYULFxAeHg5NTU307NkTBY3mnDBhAlJTU6XP7du33//IiIiIiIiIPlNFfkbu4cOHePz4caFlHBwcoK2tnW/9nTt3YGNjg5MnT6JBgwbvbItj7ImIiNQPv7+JiIpfkZ+Rs7CwgIWFxXs1JpfLAUDhOTgiIiIiIiIqmmKb7OT06dM4e/YsGjdujNKlSyMxMRGTJk1CpUqVVOqNIyIiIiIiIuWKbbITfX19bN26FZ6ennByckLv3r1Ro0YNHD16FDo6OsXVLBERERER0Wev2HrkXFxccPjw4eKqnoiIiIiI6ItV7K8fICIiIiIiog+LiRwREREREZGaYSJHRERERESkZpjIERERERERqRkmckRERERERGqGiRwREREREZGaYSJHRERERESkZpjIERERERERqRkmckRERERERGqGiRwREREREZGaYSJHRERERESkZpjIERERERERqRkmckRERERERGqGiRwREREREZGaYSJHRERERESkZpjIERERERERqRkmckRERERERGqGiRwREREREZGaYSJHRERERESkZpjIERERERERqRkmckRERERERGqGiRwREREREZGaYSJHRERERESkZpjIERERERERqRkmckRERERERGqGiRwREREREZGaYSJHRERERESkZpjIERERERERqRkmckRERERERGqGiRwREREREZGaYSJHRERERESkZpjIERERERERqRkmckRERERERGqGiRwREREREZGaYSJHRERERESkZj5KIpeZmYmaNWtCJpMhOjr6YzRJRERERET02fooidzYsWNRrly5j9EUERERERHRZ6/YE7m9e/ciPDwcc+bMKe6miIiIiIiIvgilirPy+/fvo2/fvti+fTv09fXfWT4zMxOZmZnSclpaWnGGR0REREREpJaKrUdOCIGAgAAMGDAAderUUWmf4OBgmJiYSB8bG5viCo+IiIiIiEhtFTmRGz9+PGQyWaGfq1evYvHixXj+/DkmTJigct0TJkxAamqq9Ll9+3ZRwyMiIiIiIvrsyYQQoig7PHz4EI8fPy60jIODAzp37oy///4bMplMWp+bmwtNTU34+fkhLCzsnW2lpaXBxMQEqampMDY2LkqYREREVEL4/U1EVPyKnMip6tatWwrPuN27dw9eXl7YvHkz6tevjwoVKryzDn4REBERqR9+fxMRFb9im+zE1tZWYdnQ0BAAUKlSJZWSOCIiIiIiIlLuo7xHjoiIiIiIiD6cYn39wJvs7e1RTKM4iYiIiIiIvijskSMiIiIiIlIzTOSIiIiIiIjUDBM5IiIiIiIiNcNEjoiIiIiISM0wkSMiIiIiIlIzTOSIiIiIiIjUDBM5IiIiIiIiNcNEjoiIiIiISM0wkSMiIiIiIlIzTOSIiIiIiIjUDBM5IiIiIiIiNcNEjoiIiIiISM0wkSMiIiIiIlIzTOSIiIiIiIjUDBM5IiIiIiIiNcNEjoiIiIiISM0wkSMiIiIiIlIzTOSIiIiIiIjUDBM5IiIiIiIiNcNEjoiIiIiISM0wkSMiIiIiIlIzTOSIiIiIiIjUDBM5IiIiIiIiNcNEjoiIiIiISM0wkSMiIiIiIlIzTOSIiIiIiIjUDBM5IiIiIiIiNcNEjoiIiIiISM0w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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pcs = PCA(n_components=2)\n",
    "reduced_embeddings = pcs.fit_transform(document_embeddings)\n",
    "\n",
    "plt.scatter(reduced_embeddings[:, 0], reduced_embeddings[:, 1], c=labels)\n",
    "for i, txt in enumerate(documents):\n",
    "    plt.annotate(txt, (reduced_embeddings[i,0], reduced_embeddings[i, 1]))\n",
    "plt.title(\"Document Cluster Visualization\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py311",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.0"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
